package net.edu_soft.ec.asset.service;


import net.edu_soft.ec.asset.pojo.UserAff;
import net.edu_soft.ec.asset.pojo.UserAffExample;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 *  @author: PUING
 *  @Date: 2020/3/26 10:13
 *  @Description: 用户附属业务类
 */
public interface UserAffService {

    /**
     * 获取用户关注
     * @param classes 关注的类型 0产品 1厂家 2产品分类
     * @return 关注类型次数排序与
     */
    List<String> getFollows(Integer classes);

    List<UserAff> findByUserInfoId(Integer id);

    long countByExample(UserAffExample example);

    int deleteByExample(UserAffExample example);

    int deleteByPrimaryKey(Integer userAffId);

    int insert(UserAff record);

    int insertSelective(UserAff record);

    List<UserAff> selectByExample(UserAffExample example);

    UserAff selectByPrimaryKey(Integer userAffId);

    int updateByExampleSelective(@Param("record") UserAff record, @Param("example") UserAffExample example);

    int updateByExample(@Param("record") UserAff record, @Param("example") UserAffExample example);

    int updateByPrimaryKeySelective(UserAff record);

    int updateByPrimaryKey(UserAff record);

    /***
     * 根据用户id查询用户附属信息，
     * @param userId 用户id
     * @return 该用户附属信息，包括关注的产品、厂家、产品分类
     */
    UserAff findUserAffByUserId(Integer userId);

    /***
     * 关注或者取消产品、厂家、产品分类
     * @param userId 用户id
     * @param subjectId 主体id：产品or厂家or产品分类
     * @param flag 1关注 0取消关注
     * @param type 类型，区分产品、厂家、产品分类
     * @return 确认信息
     */
    int attentionOrNo(Integer userId,Integer subjectId,Integer flag,Integer type);

    /***
     * 删除用户附属信息
     * @param userId 用户id
     * @return 确认信息
     */
    int delByUserId(Integer userId,Integer isDel);

}
